#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/types.h>
int main()
{
    extern char **environ;
    // printf("begin...\n");
    // printf("begin...\n");
    // execl("/bin/ls","ls","-a","-l",NULL);
    // printf("begin...\n");
    // printf("begin...\n");

    pid_t id = fork();
    if (id == 0)
    {
        // child
        printf("我是子进程：%d\n", getpid());
        // execl("/bin/ls", "ls", "-a", "-l", NULL);

        // char *const myargv[] = {
        //     "ls",
        //     "-a",
        //     "-l",
        //     "-n",
        //     NULL};
        // execv("/bin/ls", myargv);

        // execlp("ls","ls", "-a", "-l", NULL);

        char *const myargv[] = {
            "ls",
            "-a",
            "-l",
            "-n",
            NULL};
        execvp("ls",myargv);

        // execl("./exec/otherproc","otherproc",NULL);

        // char *const myenv[] ={
        //     "MYENV=YouCanSeeMe",
        //     NULL
        // };
        // putenv("MYENV=YouCanSeeMe");
        // execle("./exec/otherproc","otherproc",NULL,environ);

        exit(1);
    }

    sleep(5);

    // fater
    int status = 0;
    printf("我是父进程\n");
    waitpid(id, &status, 0);
    printf("child exit code: %d\n", WEXITSTATUS(status));
    return 0;
}